package br.com.fotoxbh.geracao.old;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.imageio.ImageIO;


public class GerarLeiauteLateralQuimica {

	private static final int alturaTotal = 1181;
	private static final int larguraTotal = 1772;
	private static final int alturaFoto = (int) (448 * 0.75);
	private static final int larguraFoto = 590; //(int) (800 * 0.75);
	
	private static final int alturaFotoNormal = (int) (448*0.9) ;
	private static final int larguraFotoNormal = (int) (800*0.9);
	
	private static final int espaco = 3;
	private static final int margemSuperior = 40;
	private static final int entreFotos = 24;
	private static final String diretorioFormato = "C:\\Users\\Pablo\\Dropbox\\Foto-X\\Fotos\\Engenharia Civil";
	private static BufferedImage imgFundo;
	private static BufferedImage imgFundoImagem;
	//private static BufferedImage imgTitulo;
	//private static BufferedImage imgSubTitulo;
	//private static BufferedImage imgData;
	//private static BufferedImage imgRodape;
	
	static {
		try {
			imgFundo = ImageIO.read(new File(diretorioFormato + "\\fundo_01_.jpg"));
			imgFundoImagem = ImageIO.read(new File("C:\\Users\\Pablo\\Dropbox\\Foto-X\\Fotos\\Fotos Formatura Quimica" + "\\fundo_preto.png"));
			//imgTitulo = ImageIO.read(new File(diretorioFormato + "\\nome.jpg"));
			//imgSubTitulo = ImageIO.read(new File(diretorioFormato + "\\evento.jpg"));
			//imgData = ImageIO.read(new File(diretorioFormato + "\\data.jpg"));
			//imgRodape = ImageIO.read(new File(diretorioFormato + "\\rodape.jpg"));
		} catch (IOException e) {
			Logger.getLogger(GerarLeiauteLateralQuimica.class.toString()).log(Level.SEVERE, "Os arquivos de geração do formato não foram iniciados corretamente", e);
		}
	}
	
	public static File gerarFotoLeiaute(File finalImage, Image foto1, Image foto2, Image foto3) throws IOException {
		
		if(foto1 == null || foto2 == null || foto3 == null) {
			throw new IllegalArgumentException("Um dos parâmetros foto é inválido. Todos os parâmetros devem ser diferentes de null.");
		}
		
//		int yTitulo = (alturaFoto * 2) + 2*entreFotos + margemSuperior;
//		int xTitulo = (larguraTotal - imgTitulo.getWidth()) / 2;
//		imgFundo.createGraphics().drawImage(imgTitulo, xTitulo, yTitulo, null);
//		int ySubTitulo = yTitulo + imgTitulo.getHeight() + (2* espaco); 
//		int xSubTitulo = (larguraTotal - imgSubTitulo.getWidth()) / 2;
//		imgFundo.createGraphics().drawImage(imgSubTitulo, xSubTitulo, ySubTitulo, null);
//		int yData = ySubTitulo + imgSubTitulo.getHeight() + (2* espaco);
//		int xData = (larguraTotal - imgData.getWidth()) / 2;
//		imgFundo.createGraphics().drawImage(imgData, xData, yData, null);
		
		int x1 = (larguraTotal - (2*larguraFoto) - entreFotos ) / 2;
		int x2 = x1 + larguraFoto + entreFotos;

		int y1 = margemSuperior * 3; //multiplicado por 3 TODO
		int y2 = y1 + alturaFoto + entreFotos;
		
		Graphics2D context = imgFundo.createGraphics();
//		context.rotate(-0.5);
		int inicio_image = x1-100;
		context.drawImage(imgFundoImagem.getScaledInstance(larguraFoto+40, alturaFoto+30, Image.SCALE_AREA_AVERAGING),  100, 50, null); 
		context.drawImage(foto1.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), 100 + 20, 62, null);
		
		context = imgFundo.createGraphics();
//		context.rotate(0.5);
		context.drawImage(imgFundoImagem.getScaledInstance(larguraFoto+40, alturaFoto+30, Image.SCALE_AREA_AVERAGING),  100, 125 + alturaFoto, null); 
		context.drawImage(foto2.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING),  100+20, 137 + alturaFoto, null); //larguraTotal - larguraFoto - inicio_image
		
//		context.drawImage(foto3.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING),   2*larguraFoto , 5, null); //larguraTotal - larguraFoto - inicio_image
		
		context = imgFundo.createGraphics();
//		context.rotate(0);
		context.drawImage(imgFundoImagem.getScaledInstance(larguraFotoNormal+40, alturaFotoNormal+30, Image.SCALE_AREA_AVERAGING),  900, (100 + alturaFoto) / 2, null);
		context.drawImage(foto3.getScaledInstance(larguraFotoNormal, alturaFotoNormal, Image.SCALE_AREA_AVERAGING), 900 + 20, ((100 + alturaFoto) / 2) + 12, null);
//		imgFundo.createGraphics().drawImage(foto4.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x2, y2, null);
		
//		int xRodape = x2 + larguraFoto - imgRodape.getWidth();  
//		int yRodape = alturaTotal - imgRodape.getHeight() - 10*espaco;
//		imgFundo.createGraphics().drawImage(imgRodape, xRodape, yRodape, null);
		
		ImageIO.write(imgFundo, "jpeg", finalImage);
		
		return finalImage;
		
	}
	
	public static void main(String[] args) throws IOException {
		
		File dir = new File(
				diretorioFormato);
		File dirFotoComLogo = new File(
				diretorioFormato + "\\LeiauteHorizontal");

		for (String dirsSecao : dir.list()) {
			if (dirsSecao.startsWith("secao")) {
				File dirSecao = new File(dir, dirsSecao);
				BufferedImage[] parteImpressao = new BufferedImage[4];
				File finalImage = new File(dirFotoComLogo,dirSecao.getName() + ".jpg" );
				int i = 0;
				for (String nomefotoArquivo : dirSecao.list()) {
					File fotoArquivo = new File(dirSecao, nomefotoArquivo);
					if (fotoArquivo.getName().startsWith("foto")) {
						parteImpressao[i] = ImageIO.read(fotoArquivo);
						i++; //incrementa o indice da foto	
					}
				}
				/*monta o conjunto de fotos*/
				if(parteImpressao.length >= 3) {
					
					if(parteImpressao[0] == null || parteImpressao[1] == null  || parteImpressao[2] == null || parteImpressao[3] == null  ) {
						continue;
					}
					
					GerarLeiauteLateralQuimica.gerarFotoLeiaute(finalImage,parteImpressao[0], parteImpressao[1], parteImpressao[2]);
					
				}
				break;
			}
		}
	}
	
	
	//rotate
//	Graphics2D context = imgFundo.createGraphics();
//	context.rotate(-0.5);
//	context.drawImage(foto1.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x1 -400, y1+150, null);
//	
//	context = imgFundo.createGraphics();
//	context.rotate(0.5);
//	context.drawImage(foto3.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), 1100, -700, null);
//	
//	context = imgFundo.createGraphics();
//	context.rotate(0);
//	context.drawImage(foto2.getScaledInstance(larguraFotoNormal, alturaFotoNormal, Image.SCALE_AREA_AVERAGING), 482, y1+300, null);
}
